package com.suep.business.service;
import java.util.List;
import com.suep.business.domain.Order;
import com.suep.business.domain.OrderItem;
import com.suep.business.dto.OrderDTO;

/**
 * 订单相关业务逻辑接口
 *
 * @author 罗不丢
 */
public interface IOrderService {

    void pay(Order order, List<OrderItem> orderItemList,Integer userId);

    List<Order> selectOrderInProgress(Integer userId);

    List<OrderDTO> selectOrderDTOListByUserId(Integer userId);

    void updateNextStatus(Long orderId);

    /**
     * 插入一个订单
     *
     * @param order 要插入的订单对象
     * @return 插入操作影响的行数
     */
    Integer insertOrder(Order order);

    /**
     * 根据订单ID查询订单
     *
     * @param orderId 订单ID
     * @return 对应的订单对象，如果没有找到则返回null
     */
    Order selectOrderById(Long orderId);

    /**
     * 根据用户ID查询订单列表
     *
     * @param userId 用户ID
     * @return 该用户的订单列表
     */
    List<Order> selectOrdersByUserId(Integer userId);

    /**
     * 根据店铺ID查询订单列表
     *
     * @return 该店铺的订单列表
     */
    List<Order> selectOrdersByStoreId(Integer useId);
    List<OrderDTO> selectOrdersByStoreIdByToday(Integer userId);



    /**
     * 根据配送员ID查询订单列表
     *
     * @param deliveryManId 配送员ID
     * @return 该配送员负责的订单列表
     */
    List<Order> selectOrdersByDeliveryManId(Integer deliveryManId);

    /**
     * 更新订单信息
     *
     * @param order 包含更新信息的订单对象
     * @return 更新操作影响的行数
     */
    Integer updateOrder(Order order);

    /**
     * 根据订单ID删除订单
     *
     * @param orderId 订单ID
     * @return 删除操作影响的行数
     */
    Integer deleteOrderById(Integer orderId);
}
